﻿using CrawlerFramework.ConfigEntity;
using CrawlerFramework.Models;
using CrawlerFramework.PageProcessor;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace CrawlerFramework.CrawlerEngine
{
    public interface ICrawlerEngine
    {
        IPageProcessorBuilder PageProcessorBuilder { get; }

        ILogService Logger { get; }

        bool IsParallel { get;}
        
        void ExecuteNewScheduledJobs();

        void ExecuteScheduledJobs(IEnumerable<Guid> jobGuids);

        void ExecuteScheduledJob(Guid jobGuid);

        //IEnumerable<ScheduledJob> GetAllScheduledJobs();

        //IEnumerable<ScheduledJob> GetRunningJobs();

        void PauseAllProcesses();

        void PauseScheduledJob(Guid jobGuid);

        void UpdateScheduledJob(ScheduledJob job);

    }
}
